package com.xuecheng.media.service;

import com.xuecheng.media.model.dto.UploadFileParamsDto;
import com.xuecheng.model.RestResponse;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

/**
 * 大文件上传
 * @Author: chenheng
 * @Date: 2023/12/22 15:44
 */
public interface BigFilesService {
    /**
     * 检查文件是否存在
     * @param fileMd5 文件的md5
     * @return false 不存在，true 存在
     */
    public RestResponse<Boolean> checkFile(String fileMd5);

    /**
     * 检测分块是否存在
     * @param fileMd5 文件md5
     * @param chunk 分块编号
     * @return
     */
    public RestResponse<Boolean> checkchunk(String fileMd5,int chunk);

    /**
     * 上传分块
     * @param file
     * @param fileMd5
     * @param chunk
     * @return
     */
    public RestResponse uploadChunk(MultipartFile file, String fileMd5, int chunk);


    /**
     * 合并分块 合并之后入库以及判断是否上传成功
     * @param companyId
     * @param fileMd5
     * @param chunkTotal
     * @param uploadFileParamsDto
     * @return
     */
    public RestResponse mergeChunks(Long companyId, String fileMd5, int chunkTotal, UploadFileParamsDto uploadFileParamsDto);

    /**
     * 从minio下载文件
     * @param bucket 桶
     * @param objectName 对象名称
     * @return 下载后的文件
     */
    public File downloadFileFromMinIO(String bucket, String objectName);
}
